1. Field of the Invention
This invention relates to direct manipulation of graphical objects on a visual display for a computing system. It focuses specifically on graphical objects that are hierarchically composed of other graphical objects, any one of which may engage with any other graphical object through direct manipulation. The invention specifies a method and means for defining direct manipulation relationships between graphical objects, and a means for using that information in applications.
2. Background Description
Direct manipulation, also referred to as drag-drop, in window-based systems has existed for many years. Direct manipulation concerns the relationship between any two graphical objects on a display screen and how they interact when one is dragged over and possibly dropped onto the other. This relationship is programmed into an application or system relating to the graphical objects. It is this programming which both allows or disallows the dragging over, as well as implements a semantic meaning to the drop operation.
The specification of direct manipulation relationships, being programmed in detail per application, is tedious, difficult, and prone to errors. It requires the specification of a number of programming elements, such as specialized data structures and display images, and its programming is usually fragmented into several phases such as initialize drag, dragging-over, and drag-drop. All of this makes the specification of direct manipulation difficult and non-intuitive.
The direct manipulation of graphical objects is especially useful in the area of visual programming languages. The motivation behind visual programming language technology is to utilize visual representations of programming elements to build and generate programs. The field is very large. Generally however, the approaches to visual programming may be classified into the following:
Visual Designersxe2x80x94These are visual programming languages, which focus on the construction of user interface applications. Much of the focus is on interface form and presentation construction with caveats for generating event code to facilitate textual programming of other parts of an application.
Wiring-Based Languagesxe2x80x94These languages have visual representations of programming entities, such as objects or processes. Programming proceeds by creating and connecting visual representations with lines, which typically indicate data or event flow.
Structured-Logic Basedxe2x80x94These focus on structuring the logic of a program. Typically logic is represented with nested graphical figures which represent logical entities, e.g. if, loops, etc. Typically visual representations of programming objects are not shown in these tools.
Form-Basedxe2x80x94These are visual programming languages of the spreadsheet genre. Typically represented as grids or arrays of numbers, a textual macro language typically accompanies the language to do more complex manipulations.
Most visual programming languages are wiring-based. The power of this type of language resides in its ability to represent parallelism. That is, its power is its ability to show either simultaneous, concurrent, or alternate possible executions at the same time. The focus of these types of languages has been a connection paradigm (wires) which generally indicates either event or data flow.
Whereas the connectivity aspect is the chief asset of these languages, it is also its greatest liability. Wirebased language programs become difficult to decipher even in modestly complex examples, as the causal nature of execution rapidly gets lost in the implicit parallelism of the diagram. Also, the visual element that represents the object tends to be limited. Generally, they are either named boxes representing variables, or in iconic representations. In this case, the true dynamic of the language is in connecting these representations, not working with them. At heart, these are execution-based languages to which the data model is secondary. Much more could be gained from clearer and more expansive object detail as interaction amongst visual details could lead to larger interpretations of corresponding inter-programming object possibilities. As a simple example, cross object property assignment could be done with a simple drag-drop operation on graphical elements representing the source and target properties of the corresponding programming objects.
It would be advantageous for direct manipulation relationships, such as that described in the prior paragraph, to be specified to an application dynamically, as opposed to coded within the application. One would, for example, use graphical objects similar to those of the application. Then by performing graphical manipulations, one may explicitly define actions and associate them with some program level activity, such as the generation of program code. This is a form of direct manipulation by example or simulation. Data capturing direct manipulation specifications made in this manner could be used directly in applications to define common application activity. This is the essence of the present invention.
It is therefore an objective of the invention to provide a method and apparatus for defining direct manipulation relationships amongst graphical elements of hierarchically structured visuals to be used in programming with a visual programming language. The method provides a means for specifying direct manipulation relations in a manner identical to the way they would be utilized in applications. The method captures the direct manipulation specifications as data, which applications may readily utilize to implement those direct manipulation relationships.
According to the invention, the direct manipulation relationships are specified dynamically, for example, using graphical objects similar to those of the application, and using graphical gestures identical to the ones to be used in the application. This is a form of direct manipulation by example. Data capturing direct manipulation specifications made in this manner could then be easily used directly in applications.